﻿using System;
using System.Collections.Generic;
using System.Linq;
using Ezio.Model;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace Ezio.Informes
{
    public class ReportFactory
    {
        private DataProvider Provider = new DataProvider();
        private string Reporte;

        public void CreateCicloMinuta(DateTime RangoInferior, DateTime RangoSuperior, int IdColegio, int IdTipoMenu)
        {
            List<ProgramacionMenus> Programacion = Provider.ProgramacionMenus.Where(t =>
                t.Fecha >= RangoInferior && t.Fecha <= RangoSuperior && t.Menus.IdTipoMenu == IdTipoMenu && t.IdColegio == IdColegio).ToList();

            Reporte = string.Format(Resource.Resources.Cliclo_Minutas, FormatParametes(Programacion));

            StreamWriter Writer = new StreamWriter(@"C:\Files\t.html");
            Writer.Write(Reporte);
            Writer.Close();
            Document Document = new Document();
            PdfWriter.GetInstance(Document, new FileStream((@"C:\Files\t.pdf"), FileMode.OpenOrCreate));
            Document.Open();
            
            Document.Add(new Paragraph(Reporte));
            Document.Close();

        }

       
        private string FormatParametes(List<ProgramacionMenus> Programacion)
        {
            string Base = "<td>{0}</td>";

            string Parameter = string.Format(Base, Programacion.SingleOrDefault(t => t.Fecha.DayOfWeek == DayOfWeek.Monday).Menus.Nombre);
            Parameter += string.Format(Base, Programacion.SingleOrDefault(t => t.Fecha.DayOfWeek == DayOfWeek.Tuesday).Menus.Nombre);
            Parameter += string.Format(Base, Programacion.SingleOrDefault(t => t.Fecha.DayOfWeek == DayOfWeek.Wednesday).Menus.Nombre);
            Parameter += string.Format(Base, Programacion.SingleOrDefault(t => t.Fecha.DayOfWeek == DayOfWeek.Thursday).Menus.Nombre);
            Parameter += string.Format(Base, Programacion.SingleOrDefault(t => t.Fecha.DayOfWeek == DayOfWeek.Friday).Menus.Nombre);

            return Parameter;
        }
    }
}